This application is related to the following co-pending and commonly-assigned patent applications, which applications were filed on the same date herewith, and which applications are incorporated herein by reference in their entirety:
xe2x80x9cA Cross-Platform Program, System, and Method Having a Global Registry Object for Mapping Registry Equivalent Functions in an AIX Operating System Environment,xe2x80x9d having U.S. patent application Ser. No. 09/280,345;
xe2x80x9cA Cross-Platform Program, System, and Method Having a Global Registry Object for Mapping Registry Equivalent Functions in an OS/2 Operating System Environment,xe2x80x9d having U.S. patent application Ser. No. 09/280,350; xe2x80x9cA Cross-Platform Program, System, and Method Having a Global Registry Object for Mapping Registry Functions in a Windows Operating System Environment,xe2x80x9d having U.S. patent application Ser. No. 09/280,349;
xe2x80x9cGlobal Registry Object for Mapping Registry Functions and Registry Equivalent Functions Across Multiple Operating Systems in a Cross-platform Program,xe2x80x9d having U.S. patent application Ser. No. 09/280,371;
xe2x80x9cA Cross-platform Program, System, and Method Having a System Independent Registry for Use on Operating Systems Irrespective of a Registry Equivalent,xe2x80x9d having U.S. patent application Ser. No. 09/280,368;
xe2x80x9cA System, Method, and Program for Enabling a Use of Property Object Having a Variable for a Property Value in a Cross-Platform Program,xe2x80x9d having U.S. patent application Ser. No. 09/280,344;
xe2x80x9cA System, Method, and Program for Overriding Program Properties,xe2x80x9d having U.S. patent application Ser. No. 09/280,346;
xe2x80x9cA System, Method and Program for Providing an Object-Oriented Install Architecture,xe2x80x9d having U.S. patent application Ser. No. 09/280,352;
xe2x80x9cA System, Method, and Program for Automatic Error Detection While Utilizing a Software State Machine for Carrying out the Process Flow of a Software Program,xe2x80x9d having U.S. patent application Ser. No. 09/280,375;
xe2x80x9cA System, Method, and Program for Utilizing a Software State Machine for Carrying Out the Process Flow of a Software Program,xe2x80x9d having U.S. patent application Ser. No. 09/280,376;
xe2x80x9cA System, Method, and Program for Enabling a Software Program to Automatically Select a System-dependent Function,xe2x80x9d having U.S. patent application Ser. No. 09/280,369;
xe2x80x9cA System, Method, and Program for Mapping a Global Object to Desktop Elements of Different Operating Systems,xe2x80x9d having U.S. patent application Ser. No. 09/280,374;
xe2x80x9cA System, Method, and Program for Modifying a Text File,xe2x80x9d having U.S. patent application Ser. No. 09/280,348;
xe2x80x9cA System, Method, and Program for Updating Registry Objects With a Cross-platform Installation Program,xe2x80x9d having U.S. patent application Ser. No. 09/280,351;
xe2x80x9cA System, Method, and Program For Preserving Background Settings During Install and Uninstall Operations,xe2x80x9d having Ser. No. 09/280,374;
xe2x80x9cA System, Method, And Program for Modifying a Library Object,xe2x80x9d having Ser. No. 09/280,347;
xe2x80x9cA System, Method, And Program For Installation on Drives Using a Drive Object,xe2x80x9d having U.S. patent application Ser. No. 09/280,353; and
xe2x80x9cA System, Method, and Program for Performing Program Specific Uninstall Operations,xe2x80x9d having U.S. patent application Ser. No. 09/280,373.
A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
1. Field of the Invention
The present invention relates to a system, method, program, and data structure for installing and uninstalling programs and in particular for checking dependencies of installed components.
2. Description of the Related Art
An installer program is a software program that enables a programmer to write specific code to install a given application program onto the drives of a computer in a way that enables the given application program to work correctly with the computer""s environment, including its operating system. There are several types of installersxe2x80x94Java installers and operating system specific installers, e.g., Microsoft Windows installers, and International Business Machines (xe2x80x9cIBMxe2x80x9d) OS/2 and AIX operating system installers, etc. Many of the install programs existing today have various limitations in their functionality as discussed below.
One type of Java installer is provided by a software company known as InstallShield. Currently, the functionality and configurability of this Java installer is somewhat limited. For example, the Java installer provides default panels, but the text cannot be changed or configured. Also, this Java installer is not easy to customize. In other words, a programmer cannot easily add a function that is not provided by the installer program. In addition, the current Java installer provides only limited registry support. A registry is a central repository for all possible information for the computer such as hardware configurations and software settings, etc. The registry maintains information on installed components. A programmer or user can access the registry to determine information about installed products, based upon what the user/programmer placed into the registry or what information is useful to the user. Presently, the Java installer only works with a Microsoft Windows"" registry; and the support provided with Microsoft Windows is limited. For example, the current Java installer does not enable the Windows"" system registry to be updated directly. Instead, the keys to update in the registry are in a file which must be imported into the registry through a system call. It would be desirable if such a Java installer program supported multiple directories, splash screens (which are images that come up while a software product is being installed), and multiple languages instead of only English. Furthermore, it would be desirable for a given installer program to be more broadly applicable to other environments and operating systems. Although InstallShields"" Java installer is tailored to Java, it is also geared somewhat for the Windows"" operating system as discussed above in terms of the Windows"" registry support provided. However, it does not provide specific support for other operating systems such as the IBM OS/2 and AIX operating systems.
Another Java installer is called xe2x80x9cInstall Anywherexe2x80x9d from ZeroG. This Java installer program also has a default panel that is not configurable, e.g., the order in which panels appear is not customizable. Likewise, registry support is limited. A user/programmer updates a registry from a file using a xe2x80x9creg_editxe2x80x9d command. Although this installer program enables a user/programmer to add a few items into the registry, the registry cannot be queried. In addition, other registry functional features are not available. Likewise, there is no multiple directory support, and no national language support. Also, it does not support multiple operating systems, i.e., there is no OS/2 or AIX specific support.
Another approach would be to provide install APIs for Java. However, this approach is not yet available.
With respect to operating system specific installers, InstallShield provides a Microsoft Windows"" 32 installer, e.g., Microsoft Windows 95/98 and NT. Although this installer program is widely used throughout the industry, it is based upon a proprietary scripting language developed by InstallShield. The scripting language is similar to Basic programming language. Programmers, who generally have experience and knowledge of object oriented programs such as C++ and Java, must learn this proprietary InstallShield script, which is not related to the popular computer languages, in order to program an Install program. This unfamiliarity with the proprietary InstallShield scripting language complicates the installer programming process.
Moreover, each operating system provides different techniques to track installed programs and their dependencies. A dependency indicates a program that another program needs in order support all functions. A depending program is a program that requires the installation of a dependent program to implement all the depending programs features and functions. Thus, there is a need in the art for a system for checking dependencies that can be used across operating systems, including with those operating systems that currently do not check whether dependent components are installed when installing a program.
To overcome the limitations in the prior art described above, preferred embodiments disclose a system, method, program, and data structure for installing a program onto a computer including an operating system. Dependency objects indicate a dependent component on which the program to install depends. The program processes the dependency objects before installing the program and determines an operating system command that is capable of determining whether the dependent component indicated in the dependency object is installed in the computer. The program then executes the operating system command to determine whether the dependent components indicated in the dependency objects are installed in the computer. An indication is made as to the dependent components that are not installed after determining that dependent components are not installed.
In further embodiments, the dependency object is capable of including an install script to install the dependent component onto the computer. In such case, a determination is made as to whether the dependency object that includes dependent components that are not installed in the computer includes install script. The install script is enabled after it is determined that the dependency object includes install script. A user may select to execute the enabled install script to install the dependent component.
In still further embodiments, the program is installed after processing the dependency objects and determining that the dependent components are installed in the computer. After installing the program, an indication of the installed program is made in a data structure. The dependency objects are then processed to determine the dependent components from which the installed program depends. An indication is made in the data structure of those dependent components determined from the dependency objects for the installed program. This data structure may be used when removing an installed program to determine whether the installed program to remove is indicated as a dependent component. If so, the data structure is used to locate depending programs that depend upon the dependent components to operate in at least one respect. The installed program cannot be removed until the determined depending programs are removed.
Preferred embodiments provide a data structure and program for determining whether all dependent components are installed before installing a depending program which needs the dependent components installed to perform all functions. Preferred embodiments further provide mechanisms for installing the dependent components not installed in order to allow the installation of the depending program that requires that the dependent components be installed. These mechanisms used to maintain information and determine dependencies may further be used during removal of a program to insure that programs are not removed that are dependent components from which other installed programs depend.
With preferred embodiments, the dependency object may be used across operating systems to check dependencies for all operating systems on which the install program operates. In this way, the dependency object is part of the cross-platform capabilities that allow the installer program to install products on different operating system platforms.